package com.siashan.toolkit.crypt;

/**
 * 在解码过程中出现故障条件时引发。当{@link Decoder}
 * 遇到解码特定异常，例如无效数据或超出预期范围的字符。
 *
 * @author siashan
 * @since 1.0.7
 */
public class DecoderException extends Exception {

    /**
     * 声明串行版本Uid。
     *
     * @see <a href="http://c2.com/cgi/wiki?AlwaysDeclareSerialVersionUid">始终声明串行版本Uid</a>
     */
    private static final long serialVersionUID = 1L;

    /**
     * 构造一个新异常，将{@code null}作为其详细信息。原因未初始化，可能是
     * 随后，可以通过调用{@link#initCause}来初始化。
     *
     */
    public DecoderException() {
        super();
    }

    /**
     * 使用指定的详细信息构造新异常。原因未初始化，随后可能会发生
     * 通过调用{@link #initCause}初始化。
     *
     * @param message
     *            保存以供以后通过{@link#getMessage（）}方法检索的详细信息。
     */
    public DecoderException(final String message) {
        super(message);
    }

    /**
     * 使用指定的详细信息和原因构造新异常。
     * <p>
     * 请注意，与{@code cause}关联的详细信息不会自动合并到此文件中
     * 异常的详细信息。
     *
     * @param message
     *            保存以供以后通过{@link#getMessage（）}方法检索的详细信息。
     * @param cause
     *            保存以供以后通过{@link#getCause（）}方法检索的原因。一个{@code null}值，并指示原因不存在或未知。
     */
    public DecoderException(final String message, final Throwable cause) {
        super(message, cause);
    }

    /**
     * 构造具有指定原因的新异常和详细消息<code>（原因==null？
     * null:cause.toString（）</code>（通常包含{@code cause}的类和详细信息）。
     * 此构造函数对于异常非常有用，这些异常只不过是其他一次性文件的包装。
     *
     * @param cause
     *            保存以供以后通过{@link#getCause（）}方法检索的原因。一个{@code null}值，并指示原因不存在或未知。
     */
    public DecoderException(final Throwable cause) {
        super(cause);
    }
}
